Passed
Push — task/user-api-endpoint ( 6e4649...f0b85b )
by Chris
04:32
created

localize.ts ➔ getLocale   A

Complexity

Conditions 2

Size

Total Lines 7
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 6
dl 0
loc 7
rs 10
c 0
b 0
f 0
cc 2
1
import { localizedField } from "../models/app";
2
3
export type Locales = "en" | "fr";
4
type LocalizedFields<T> = {
5
  [K in keyof T]: T[K] extends localizedField ? K : never;
6
}[keyof T];
7
8
export function localizeField<T>(
9
  locale: Locales,
10
  model: T,
11
  field: LocalizedFields<T>,
12
) {
13
  return model[field][locale];
14
}
15
16
export function getLocale(locale: string): Locales {
17
  if (locale === "en" || locale === "fr") {
18
    return locale;
19
  }
20
  console.log("Warning: unknown locale. Defaulting to en.");
21
  return "en";
22
}
23